
package com.biblioteca.servicio;

import com.biblioteca.dao.ComentarioDao;
import com.biblioteca.dao.LibroDao;
import com.biblioteca.persistencia.Comentario;
import com.biblioteca.persistencia.Libro;
import com.google.appengine.api.datastore.Key;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Service;


@Service
public class ComentarioServicioImpl implements ComentarioServicio{
    
    private ComentarioDao comentarioDao;
    private LibroDao libroDao;

    
    @Autowired
    @Required
    public void setComentarioDao(ComentarioDao comentarioDao) {
        this.comentarioDao = comentarioDao;
    }

    @Autowired
    @Required
    public void setLibroDao(LibroDao libroDao) {
        this.libroDao = libroDao;
    }

    @Override
    public void create(Comentario comentario) {
        comentarioDao.insert(comentario);
    }

    @Override
    public List<Comentario> getAllComentarios() {
        return  comentarioDao.getAll(Comentario.class);
    }

    @Override
    public Comentario getComentario(Key keyCom) {
        return  comentarioDao.find(Comentario.class, keyCom);
    }

    @Override
    public List<Comentario> getComentariosLibro(Libro libroc) {
       List<Comentario> comm = libroc.getComentarios();
       return comm;
    }

    //@PostConstruct
    @Override
    public void iniciar() {
        comentarioDao.removeAll(Comentario.class);
    }

    @Override
    public void borrar(Comentario comentario, Libro libro) {
        int num = libro.getNumComentarios();
        num = num-1;
        System.out.println("comentarioServicio" + comentario.getIdComentario());
        Comentario ct = comentarioDao.findByPK(Comentario.class, comentario.getIdComentario());
        System.out.println("libro encontrado"+ libro.getTitulo());
        libro.setNumComentarios(num);
        libro.getComentarios().remove(comentario);
        libroDao.update(libro);
        System.out.println("comentarios de libro" + libro.getComentarios().size());
        comentarioDao.remove(ct); 
    }

    @Override
    public void update(Comentario comentario) {
        comentarioDao.update(comentario);
    }
    
}
